/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package ec.edu.espe.distribuidas.aseguradora.servicio;

import ec.edu.espe.distribuidas.aseguradora.dao.DependienteFacade;
import ec.edu.espe.distribuidas.aseguradora.exception.ErrorValidacionException;
import ec.edu.espe.distribuidas.aseguradora.modelo.Dependiente;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;

/**
 *
 * @author alejandro
 */
@Stateless
@LocalBean
public class DependienteServicio {
    
    @EJB 
    private DependienteFacade dependienteFacade;
    
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void crear(Dependiente dependiente){
        Dependiente dependienteTmp=this.dependienteFacade.find(dependiente.getCodDependiente());
        if(dependienteTmp==null){
            this.dependienteFacade.create(dependiente);
        }else{
            System.err.println("Codigo del dependiente ya registrado."+dependienteTmp.getCodDependiente());
            ErrorValidacionException evex=new ErrorValidacionException("El codigo que ingreso  ya esta registrado");
            throw evex;
        }
        
    }
    
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void modificar(Dependiente dependiente){
        this.dependienteFacade.edit(dependiente);
    }
    
    public void eliminar(String codigo){
        
        Dependiente dependienteTmp=this.dependienteFacade.find(codigo);
        if(dependienteTmp!=null){
            this.dependienteFacade.remove(dependienteTmp);
        }else{
            System.err.println("Codigo del dependiente no existe."+codigo);
            ErrorValidacionException evex=new ErrorValidacionException("El codigo que ingreso  no existe");
            throw evex;
        }
    }
    
    public Dependiente buscarPorCodigo(String codigo)
    {
        return this.dependienteFacade.find(codigo);
    }
    
    
    
    
    
    
    
    
}
